package com.zhuyuan.system.api.constants;

import com.zhuyuan.core.constant.InnerContsants;
import feign.Request;
import feign.RequestInterceptor;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
 * @Author: 张琳凯
 * @Description: TODO
 * @DateTime: 2025/2/26 14:06
 **/


@Configuration
public class FeignConfig {
    /**
     * 配置请求的选项
     *
     * 本方法用于设置请求的连接和读取超时时间
     * 这里的配置对于调用远程服务或API特别重要，因为它直接影响到请求的稳定性和响应速度
     *
     * @return Request.Options 包含连接和读取超时设置的请求选项实例
     */
    @Bean
    public Request.Options options() {
        return new Request.Options(5000, 10000);
    }

    /**
     * 创建内部请求拦截器
     * 该拦截器用于在发送请求前添加内部使用的请求头，以标识请求来源或进行内部安全校验
     * 处理Feign请求需要携带Token的问题,现在是只要feign请求标识内部信任，如果后期需要可做更细度划分
     * @return RequestInterceptor 一个内部请求拦截器实例，用于处理请求模板
     */
    @Bean
    public RequestInterceptor internalRequestInterceptor() {
        return template -> {
            // 添加内部请求头标识，例如密钥或固定值
            template.header(InnerContsants.INNER_INTERNAL_HEADER, InnerContsants.INNER_INTERNAL_VALUE);
        };
    }
}
